import axios from "axios";

axios.defaults.timeout = 5000;
axios.defaults.baseURL = "http://127.0.0.1:8090";

//http request 拦截器
axios.interceptors.request.use(
  config => {
    // const token = getCookie('名称');注意使用的时候需要引入cookie方法，推荐js-cookie
    config.data = JSON.stringify(config.data);
    config.headers = {
      "Content-Type": "application/json"
    };
    // if(token){
    //   config.params = {'token':token}
    // }
    return config;
  },
  error => {
    return Promise.reject(err);
  }
);

//http response 拦截器
axios.interceptors.response.use(
  response => {
    console.log("response" + response.request.responseURL, response);
    return response;
    // if (response.data.errCode == 2) {
    //   router.push({
    //     path: "/login",
    //     querry: { redirect: router.currentRoute.fullPath } //从哪个页面跳转
    //   });
    // }
    // return response;
  },
  error => {
    //console.log("res-err", err.response);
    if (error.response) {
      //console.log("err-response", err.response);
      switch (error.response.status) {
        case 401:
          // 返回 401 清除cookie信息并跳转到登录页面
          // alert(err.response.data.message);
          alert("（未授权）请求要求身份验证。");
          // router.push("/login");
          break;
        case 403:
          alert("（禁止）服务器拒绝请求。");
          break;
        case 500:
          alert("（服务器内部错误） 服务器遇到错误，无法完成请求。" + err.response.data.exception);
      }
    }
    return Promise.reject(error);
  }
);

/**
 * 封装get方法
 * @param url
 * @param data
 * @returns {Promise}
 */
export function httpGet(url, params = {}) {
  return new Promise((resolve, reject) => {
    axios
      .get(url, {
        params: params
      })
      .then(response => {
        resolve(response);
      })
      .catch(err => {
        reject(err);
      });
  });
}

/**
 * 封装post请求
 * @param url
 * @param data
 * @returns {Promise}
 */
export function post(url, data = {}) {
  return new Promise((resolve, reject) => {
    axios.post(url, data).then(
      response => {
        resolve(response);
      },
      err => {
        reject(err);
      }
    );
  });
}
// 异常处理
export function handleResult(res) {
  console.log("handleResult", res);
  if (res.status === 200) return extractResult(res.data);
  throw new Error(`HTTP请求错误[${res.status}] ${res.data}`);
}
export function extractResult({ success = false, message, data }) {
  console.log(success, message, data);
  if (success) return data;
  let reason = message || "未知错误";
  // if (code === 999) {
  //   reason = message || "未知错误";
  // } else if (code === -1001) {
  //   reason = "用户名或密码错误";
  // } else if (code === -1002) {
  //   reason = "用户不存在";
  // } else if (code === -1003) {
  //   reason = "用户未登录";
  // }
  throw new Error(reason);
}
// /**
//  * 封装patch请求
//  * @param url
//  * @param data
//  * @returns {Promise}
//  */

// export function patch(url, data = {}) {
//   return new Promise((resolve, reject) => {
//     axios.patch(url, data).then(
//       response => {
//         resolve(response.data);
//       },
//       err => {
//         reject(err);
//       }
//     );
//   });
// }

// /**
//  * 封装put请求
//  * @param url
//  * @param data
//  * @returns {Promise}
//  */

// export function put(url, data = {}) {
//   return new Promise((resolve, reject) => {
//     axios.put(url, data).then(
//       response => {
//         resolve(response.data);
//       },
//       err => {
//         reject(err);
//       }
//     );
//   });
// }
